%Document latex pour le cours de ARA 2 et 3
\documentclass{article}

% Ici, et jusqu'au \begin{document} ci-dessous, c'est le préambule : on y met
% les déclarations de style, les définitions de macros, etc.

%%%% Personnalisation du style défaut

% Fichiers de style utilisés les déclarations se font au moyen de la commande
% \usepackage

\usepackage[french]{babel} % Pour adopter les règles de typographie française

\usepackage[utf8x]{inputenc}

\usepackage{graphicx}

\usepackage{amsmath} % Les bibliothèques LaTeX de l'American
                     % Mathematical Society sont pleines de macros
                     % intéressantes (voire indispensables).

\usepackage{fancyvrb}
\usepackage{xcolor}
\usepackage{listings}

%%configuration de listings
\lstset{
language=ada,
basicstyle=\ttfamily\small, %
identifierstyle=\bf\color{black}, %
keywordstyle=\color{red}, %
stringstyle=\color{blue!60}, %
commentstyle=\it\color{blue}, %
columns=flexible, %
tabsize=2, %
extendedchars=true, %
showspaces=false, %
showstringspaces=false, %
numbers=left, %
numberstyle=\tiny, %
breaklines=true, %
breakautoindent=true, %
captionpos=b
}

\definecolor{Zgris}{rgb}{0.87,0.85,0.85}

\newsavebox{\BBbox}
\newenvironment{DDbox}[1]{
\begin{lrbox}{\BBbox}\begin{minipage}{\linewidth}}
{\end{minipage}\end{lrbox}\noindent\colorbox{Zgris}{\usebox{\BBbox}} \\
[.5cm]}

%%%% Déclaration d'environnements

% Les définitions, théorèmes et autres lemmes, corollaires, propositions,
% exemples, se déclarent au moyen de \newtheorem

\newtheorem{de}{Définition}[subsection] % les définitions et les théorèmes sont
\newtheorem{theo}{Théorème}[section]    % numérotés par section
\newtheorem{prop}[theo]{Proposition}    % Les propositions ont le même compteur
                                        % que les théorèmes

%%%% Notations

% Ici l'on définit les notations que l'on utilisera, au moyen de la macro
% \newcommand

\newcommand{\ordmult}{\mathop{.}} % \ordmult est l'opérateur de multiplication
                                  % d'ordinaux

% Voici une notation qui prend des paramètres

\newcommand{\expo}[2]{#1^{#2}}

%%%% déclarations pour le titre

\author{GROUPE ACID\\
        Université Pierre et Marie Curie
}

\title{IBDR\\
       \projet\\
       \ Spécifications des données et actions}
%\date{}

%%%% fin du préambule, on passe au contenu : tout le texte entre
%%%% \begin{document} et \end{document} 

\begin{document}
\maketitle

% Un petit résumé
\begin{abstract} 
  UE : Ingénierie des Bases de Données Réparties, année 2009/2010.
  
  Formation : Systèmes et Applications Réparties, UPMC.
\end{abstract}

% Les commandes de sectionnement (\chapter, \section, \subsection, \etc.)
% sont automatiquement numérotés, et permettent de produire facilement
% une table des matières au moyen de :
\tableofcontents

\newpage

\section*{Avant-propos}

Le présent papier s'inscrit dans le cadre du projet \textbf{IBDR}, qui a pour but la conception et réalisation d'une BdD répartie sur le thème "\textbf{VIDEO CLUB}".\\



Suite à l'étude préalable de l'application, nous nous sommes accordés avec la MOA sur les modèles cités dans ce rapport.


\section{Dictionnaire des données}

Le dictionnaire des données ci-dessous montre les champs de chaque entité. 

Les choix particuliers sont :
\begin{itemize}
\item \textit{isan} est un id unique de film.
\item \textit{affichable} de film permet de savoir si il est disponible en stock pour l'afficher ou pas au client.
\item \textit{réservé} et \textit{loué} de Exemplaire permet de savoir si un exemplaire est disponible sans l'aide de grandes requêtes sur la BD.
\item la table \textit{réservation} permet au client de réserver pour une date lointaine, sans que le vidéo-club bloque l'exemplaire, qui sera bloqué peu de temps 
avant la date prévue de location, on peut imaginer un traitement planifié.
\item \textit{liste_noire} de \textit{Abonné} permet au vidéo-club de garder un client qui a fraudé.
\item lier un acteur/réalisateur à un rôle dans un film se fera à l'aide d'une table spécifique.
\end{itemize}


\begin{tabular}{|c|c|c|c|c|c|}
\hline

\textbf{Nom MEA}&\textbf{Nom SR}&\textbf{Description}&\textbf{Type}&\textbf{Longueur}&\textbf{Valeur (contraintes)}\\ \hline
&&&&&\\ \hline
Film&Film& & & &\\ \hline
isan       "&"isan"&" Numéro ISAN "&" String "&64&" non nul, ex : ISAN 0000-0001-8947-0000-8-0000-0000-D"\\ \hline
titre      "&"title"&" Titre film  "&" String "&20&" non nul"\\ \hline
date_sortie "&"release_date"&" Date de sortie "&" Date "&10&" non nul, valeur < date actuelle"\\ \hline
affichable "&&" Affichable  "&" Boolean "&1&" {0,1}"\\ \hline
&&&&&\\ \hline
Personne"&"Person"&"          "&"      "&"          "&\\ \hline
nom_pers "&"last_name"&" Nom personne "&" String "&64&" non nul"\\ \hline
prénom_pers "&"first_name"&" Prénom personne "&" String "&64&" non nul"\\ \hline
date_nais_pers "&"birthdate"&" Date de naissance "&" Date "&10&" non nul, valeur < date actuelle"\\ \hline
nationalité "&"country"&" Nationalité "&" String "&64&" non nul, {valeur parmi les nationalités possibles}"\\ \hline
&&&&&\\ \hline
Edition"&"Edition"&"          "&"      "&"           "&\\ \hline
id_edit "&"id"&" Identificateur "&" Entier "&20&" non nul"\\ \hline
support "&"support"&" Support "&" String "&64&" non nul, {vhs,dvd,blue-ray}"\\ \hline
date_edit "&"date"&" Date d'édition "&" Date "&10&" non nul, valeur < date actuelle"\\ \hline
extras "&"extras"&" Autres Infos. "&" String "&256&" none"\\ \hline
&&&&&\\ \hline
Exemplaire"&"Copy"&" "&" "&" "&\\ \hline
id_exemplaire "&"id"&" Identificateur de l'exemplaire "&" Entier "&20&" non nul"\\ \hline
id_edition"&&&&&\\ \hline
to_be_deleted"&&&&&\\ \hline
reservé "&"rented"&" Est réservé "&" booléen "&1&" défaut = false"\\ \hline
loué "&"booked"&" Est loué "&" booléen "&1&" défaut = false"\\ \hline
&&&&&\\ \hline
Langue"&"Language"&" "&" "&" "&\\ \hline
langue "&"language_name"&" Langue "&" String "&64&" non nul, {valeur parmi liste de langues possibles}"\\ \hline
&&&&&\\ \hline
Distinction"&"Award"&" "&" "&" "&\\ \hline
intitule "&"name"&" Intitulé "&" String "&256&" non nul, {oscar du meilleur film, oscar du meilleur acteur, ...)"\\ \hline
date_remise "&"year"&" Date de remise "&" Entier "&4&" non nul, valeur <= date actuelle"\\ \hline
&&&&&\\ \hline
Genre"&"Genre"&" "&" "&" "&\\ \hline
intitulé_genre "&"name"&" Nom du genre "&" String 64 "&&" non nul, {valeur parmi la liste de genres possibles}"\\ \hline
&&&&&&\hline
Relance"&"Recovery"&" "&" "&" "&\\ \hline
num_relance "&"id"&" Numéro relance "&" Entier "&20&" non nul"\\ \hline
niveau "&"recovery_level"&" Niveau de la relance "&" String "&&" non nul, {1,2,3}"\\ \hline
date"&"time"&"Heure de la relance"&"HeureDate"&&\\ \hline
&&&&&\\ \hline
Location"&"Rent"&" "&" "&" "&\\ \hline
id_loc "&"id"&" Identificateur "&" Entier "&20&" non nul"\\ \hline
id_subscription"&&&&&\\ \hline
id_copy"&&&&&\\ \hline
date_loc "&"rent_time"&" Date de location "&" HeureDate "&16&" non nul, valeur <= date actuelle ex:16:38 13"&11&2009\\ \hline
remise_prévue "&"planned_delivery"&" Remise prévue "&" HeureDate "&16&" valeur > date_loc"\\ \hline
remise_effective "&"actual_delivery"&" Remise effective "&" HeureDate "&16&" valeur > date_loc"\\ \hline
&&&&&\\ \hline
Réservation"&"Booking"&" "&" "&" "&\\ \hline
id_res "&"id"&" Identificateur "&" Entier "&20&" non nul"\\ \hline
date "&"booked_time"&" Date réservation "&" HeureDate "&16&" non nul"\\ \hline
date_expir "&"expiry_date"&" Date d'expiration "&" HeureDate "&16&" valeur > date"\\ \hline
&&&&&\\ \hline
Abonnement"&"Subscription"&" "&" "&" "&\\ \hline
id_abo "&"id"&" Identificateur "&" Entier "&20&" non nul"\\ \hline
solde "&"balance"&" Solde du compte "&" Entier "&20&" valeur >= 0"\\ \hline
subscription_type"&&&&&\\ \hline
firstname"&&&&&\\ \hline
lastname"&&&&&\\ \hline
début "&"begin"&" Date début "&" HeureDate "&16&"  non nul"\\ \hline
butoir "&"end"&" Date butoir "&" HeureDate "&16&" non nul, valeur > début"\\ \hline
&&&&&\\ \hline
Abonné "&"Subscriber"&" "&" "&" "&\\ \hline
nom_ab "&"firstname"&" Nom abonné "&" String "&64&" non nul"\\ \hline
prenom_ab "&"lastname"&" Prénom abonné "&" String "&64&" non nul"\\ \hline
teléphone "&"phone"&" Numéro de téléphone "&" String "&16&" non nul"\\ \hline
date_naissance_ab "&"birthdate"&" Date de naissance "&" Date "&10&" non nul, valeur < date actuelle"\\ \hline
numéro_voie "&"street_number"&" N¬∞ de voie "&" String "&8&" non nul, caract√®res numériques"\\ \hline
type_voie "&"street_kind"&" Intitulé de la voie "&" String "&16&" {rue,chemin,boulevard,faubourg,boulevard,place}"\\ \hline
libellé_voie "&"street_name"&" Libellé de la voie "&" String "&128&" non nul"\\ \hline
complement_adr "&"street_extra"&" Complément d'adresse "&" String "&16&" none"\\ \hline
ville "&"city"&" Ville "&" String "&128&" non nul, {valeur parmi les villes existantes}"\\ \hline
code_postal "&"postcode"&" Code postal "&" Entier "&5&" non nul"\\ \hline
pays "&"country"&" Pays "&" String "&128&" non nul, {valeur parmi les pays existants}"\\ \hline
liste_noire "&"blacklisted"&" Client blacklisté ou pas "&" Boolean "&1&" défaut = 0"\\ \hline
&&&&&\\ \hline
Type_Abo "&"SubscriptionType"&" "&" "&" "&\\ \hline
type "&&" Type d'abonnement "&" String "&64&" non nul, {bronze,argent,or}"\\ \hline
\hline

\end{tabular}	

\section{Modèle Entité Association}

Le modèle E-A est référencé dans la figure~\ref{MEA}, page~\pageref{MEA}.

\begin{figure}[!htb]
\begin{center}
\includegraphics[scale=0.5]{Schema\ MEA.pdf} 
\caption{MEA}
\label{MEA}
\end{center}
\end{figure}

\subsection{Relations}

Les choix particuliers sont :
\begin {itemize}
\item La table \textit{ROLE} permet de relier une personne à un film en spécifiant son rôle. Nous pouvons donc avoir un acteur aussi réalisateur.
\item La table \textit{LANGUAGE} permet de relier une langue à un film en spécifiant son type. Nous pouvons donc avoir une langue à la fois sous-titre et bande-son.
\item Rajouter
\end {itemize}

\subsection{Choix d'implantation}

\section{Contraintes fonctionnelles}

\subsection{Séquences}

\subsubsection{Autour des films}

\begin{itemize}
\item donner le nombre d'exemplaires n'ayant ni réservation ni location étant donné une édition.
\item donner les titre, compléments, date\_sortie d'un film demandé.
\item donner la liste des rôles d'un film demandé
\item donner la liste des distinctions, liste des genres d'un film demandé.
\item donner la liste des éditions en fonction du type (sous-titre, dialogues) et la langue associée.
\item donner les films selon les intitulés de genre.
\item donner les films selon les intitulés de distinction.
\item donner les films selon les personnes.
\item donner les films selon le support d'édition donné.
\item donner les films selon la date d'édition étant donné une période.
\item rechercher les films sur tous leurs paramètres.
\end{itemize}

\subsubsection{Autour des clients}

\begin{itemize}
\item à compléter
\end{itemize}

\subsubsection{Autour des locations/réservations}

\begin{itemize}
\item Effectuer une location
\item Rendre un exemplaire loué
\item Effectuer une réservation
\item Annuler une réservation
\item Attribuer un exemplaire à une réservation (tâche planifiée)
\item Annuler automatiquement une réservation qui a date_expiration expirée (tâche planifiée)
\item Finir une réservation (passer un exemplaire de réservé à loué)
\item Gérer les relances sur les locations expirées (tâche planifiée)
\item Lancer le blacklist d'un client qui a une relance à un niveau trop haut (trigger)
\end{itemize}

\section{Schéma relationnel}

Le schéma relationnel est référencé dans la figure~\ref{SR}, page~\pageref{SR}.

\begin{figure}[!htb]
\begin{center}
\includegraphics[scale=0.5]{Schema\ Relationnel.pdf} 
\caption{Schéma relationnel}
\label{SR}
\end{center}
\end{figure}

\section{Conclusion}

\section*{Références}

La fichier donné dans le livrable \textit{interfaces_tsql.txt} propose les interfaces de toutes les procédures implantées dans le projet, et discutées dans la partie \textit{Contraintes fonctionnelles}

\end{document}
